#ifndef _THREADPOOL_H_
#define _THREADPOOL_H_
#include "queue.h"
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#include <semaphore.h>
#include <string.h>
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <signal.h>
#include <sys/wait.h>
#include <sys/types.h>
#include "cmysql.h"
#include "queue.h"
//线程函数所需的结构体
struct threadpool
{
    sem_t semw;
    sem_t semr;
    pthread_mutex_t mutex;
    struct queue *que;
    pthread_t *tids;
    int queue_length_max;
    int threads;
    MYSQL *conn;
    long *sensor_id;
    long *equipment_id;
    long *admin_id;
    int runflag;
    int numofcit;
};
/*
功能：创建线程池
参数：
    threads：线程池中线程的数量
    queue_length：队列的长度
    con：线程函数的入口，参数为void *，返回值为void *
返回值：
    成功：返回线程池的结构体指针
    失败：返回NULL
*/
struct threadpool *create_threadpool(int threads, int queue_length, void *(*con)(void *));

/*
功能：清空线程池
参数：pool：线程池的结构体指针
返回值：无
*/
void destroy_threadpool(struct threadpool *pool);

#endif
